package com.app.twth.ui.home;

import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;

import com.app.twth.base.BaseViewModel;
import com.app.twth.net.HttpListener;
import com.app.twth.repository.AppDatabase;

import java.util.List;

/**
 * ****************************************************************
 * 文件名称: LoginViewModel
 * 文件描述: 使用 Room 持久化存储列表数据，Network => DB => LiveData => RecyclerView
 * 注意事项: 自动加载数据库中全部数据，不能逐渐加载
 * 版权声明:
 * ****************************************************************
 */
public class HomeViewModel extends BaseViewModel {


    public MutableLiveData<String> followersResultCode = new MutableLiveData<>();//列表请求 0成功；other失败
    public String followersResultMsg;
    public LiveData<List<Authorize>> mData;//列表数据

    public HomeViewModel() {
        mModel = new HomeDataModel();
        mData = AppDatabase.getInstance().homeDao().loadAll();//UserInfoDao_Impl 内部做了线程切换
    }

    @Override
    public void dispose() {
        super.dispose();
        AppDatabase.getInstance().close();//关闭数据库
    }

    /**
     * 获取列表
     *
     * @param isRefresh true 下拉刷新；false 上拉加载
     */
    public void getFollowers(boolean isRefresh) {
        ((HomeDataModel) mModel).getResources(new HttpListener() {
            @Override
            public void onSuccess(Object object) {
                List<Authorize> list = (List<Authorize>) object;
                AppDatabase.getInstance().homeDao().insertAll(list);
                followersResultCode.postValue("0");
            }

            @Override
            public void onError(String errorMsg, String code) {
                followersResultMsg = errorMsg;
                followersResultCode.postValue(code);
            }
        });
    }
}
